#pragma once

#include "Misc/EngineEditorMacros.h"
#include "Framework/ApplicationSubsystem.h"
#include "Material/Shader.h"
#include "ShaderCompileSubsystem.m.h"


RCLASS()
class RShaderCompileSubsystem: public RApplicationSubsystem
{
    ROBJECT

public:
    virtual void Initialize() override ;
    virtual void Deinitialize() override {};

    struct SCompileResult
    {
        TVector<uint8_t> ByteCode;

        TOptional<CString> ErrorMessage;
    };

    SCompileResult Compile(const CString& Text,EShaderStage InType);

protected:
    

};